/*
 * Copyright 2010 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 */
/*
 * Warning! This file is generated. Modify at your own risk.
 */

package com.google.api.services.calendar.model;

import com.google.api.client.json.GenericJson;
import com.google.api.client.util.DateTime;

/**
 * Model definition for Events.
 *
 * <p> This is the Java data model class that specifies how to parse/serialize into the JSON that is
 * transmitted over HTTP when working with the Calendar API. For a detailed explanation see:
 * <a href="http://code.google.com/p/google-api-java-client/wiki/Json">http://code.google.com/p/google-api-java-client/wiki/Json</a>
 * </p>
 *
 * <p>
 * Upgrade warning: starting with version 1.12 {@code getResponseHeaders()} is removed, instead use
 * {@link com.google.api.client.http.json.JsonHttpRequest#getLastResponseHeaders()}
 * </p>
 *
 * @author Google, Inc.
 */
@SuppressWarnings("javadoc")
public final class Events extends GenericJson {

  /**
   * Token used to access the next page of this result. Omitted if no further results are available.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private String nextPageToken;

  /**
   * Type of the collection ("calendar#events").
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private String kind;

  /**
   * The default reminders on the calendar for the authenticated user. These reminders apply to all
   * events on this calendar that do not explicitly override them (i.e. do not have
   * 'reminders.useDefault' set to 'true').
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.util.List<EventReminder> defaultReminders;

  static {
    // hack to force ProGuard to consider EventReminder used, since otherwise it would be stripped out
    // see http://code.google.com/p/google-api-java-client/issues/detail?id=528
    com.google.api.client.util.Data.nullOf(EventReminder.class);
  }

  /**
   * Description of the calendar. Read-only.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private String description;

  /**
   * List of events on the calendar.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.util.List<Event> items;

  static {
    // hack to force ProGuard to consider Event used, since otherwise it would be stripped out
    // see http://code.google.com/p/google-api-java-client/issues/detail?id=528
    com.google.api.client.util.Data.nullOf(Event.class);
  }

  /**
   * Last modification time of the calendar (as a RFC 3339 timestamp). Read-only.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private DateTime updated;

  /**
   * Title of the calendar. Read-only.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private String summary;

  /**
   * ETag of the collection.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private String etag;

  /**
   * The time zone of the calendar. Read-only.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private String timeZone;

  /**
   * The user's access role for this calendar. Read-only. Possible values are: - "none" - The user
   * has no access.  - "freeBusyReader" - The user has read access to free/busy information.  -
   * "reader" - The user has read access to the calendar. Private events will appear to users with
   * reader access, but event details will be hidden.  - "writer" - The user has read and write
   * access to the calendar. Private events will appear to users with writer access, and event
   * details will be visible.  - "owner" - The user has ownership of the calendar. This role has all
   * of the permissions of the writer role with the additional ability to see and manipulate ACLs.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private String accessRole;

  /**
   * Token used to access the next page of this result. Omitted if no further results are available.
   * The value returned may be {@code null}.
   */
  public String getNextPageToken() {
    return nextPageToken;
  }

  /**
   * Token used to access the next page of this result. Omitted if no further results are available.
   * The value set may be {@code null}.
   */
  public Events setNextPageToken(String nextPageToken) {
    this.nextPageToken = nextPageToken;
    return this;
  }

  /**
   * Type of the collection ("calendar#events").
   * The value returned may be {@code null}.
   */
  public String getKind() {
    return kind;
  }

  /**
   * Type of the collection ("calendar#events").
   * The value set may be {@code null}.
   */
  public Events setKind(String kind) {
    this.kind = kind;
    return this;
  }

  /**
   * The default reminders on the calendar for the authenticated user. These reminders apply to all
   * events on this calendar that do not explicitly override them (i.e. do not have
   * 'reminders.useDefault' set to 'true').
   * The value returned may be {@code null}.
   */
  public java.util.List<EventReminder> getDefaultReminders() {
    return defaultReminders;
  }

  /**
   * The default reminders on the calendar for the authenticated user. These reminders apply to all
   * events on this calendar that do not explicitly override them (i.e. do not have
   * 'reminders.useDefault' set to 'true').
   * The value set may be {@code null}.
   */
  public Events setDefaultReminders(java.util.List<EventReminder> defaultReminders) {
    this.defaultReminders = defaultReminders;
    return this;
  }

  /**
   * Description of the calendar. Read-only.
   * The value returned may be {@code null}.
   */
  public String getDescription() {
    return description;
  }

  /**
   * Description of the calendar. Read-only.
   * The value set may be {@code null}.
   */
  public Events setDescription(String description) {
    this.description = description;
    return this;
  }

  /**
   * List of events on the calendar.
   * The value returned may be {@code null}.
   */
  public java.util.List<Event> getItems() {
    return items;
  }

  /**
   * List of events on the calendar.
   * The value set may be {@code null}.
   */
  public Events setItems(java.util.List<Event> items) {
    this.items = items;
    return this;
  }

  /**
   * Last modification time of the calendar (as a RFC 3339 timestamp). Read-only.
   * The value returned may be {@code null}.
   */
  public DateTime getUpdated() {
    return updated;
  }

  /**
   * Last modification time of the calendar (as a RFC 3339 timestamp). Read-only.
   * The value set may be {@code null}.
   */
  public Events setUpdated(DateTime updated) {
    this.updated = updated;
    return this;
  }

  /**
   * Title of the calendar. Read-only.
   * The value returned may be {@code null}.
   */
  public String getSummary() {
    return summary;
  }

  /**
   * Title of the calendar. Read-only.
   * The value set may be {@code null}.
   */
  public Events setSummary(String summary) {
    this.summary = summary;
    return this;
  }

  /**
   * ETag of the collection.
   * The value returned may be {@code null}.
   */
  public String getEtag() {
    return etag;
  }

  /**
   * ETag of the collection.
   * The value set may be {@code null}.
   */
  public Events setEtag(String etag) {
    this.etag = etag;
    return this;
  }

  /**
   * The time zone of the calendar. Read-only.
   * The value returned may be {@code null}.
   */
  public String getTimeZone() {
    return timeZone;
  }

  /**
   * The time zone of the calendar. Read-only.
   * The value set may be {@code null}.
   */
  public Events setTimeZone(String timeZone) {
    this.timeZone = timeZone;
    return this;
  }

  /**
   * The user's access role for this calendar. Read-only. Possible values are: - "none" - The user
   * has no access.  - "freeBusyReader" - The user has read access to free/busy information.  -
   * "reader" - The user has read access to the calendar. Private events will appear to users with
   * reader access, but event details will be hidden.  - "writer" - The user has read and write
   * access to the calendar. Private events will appear to users with writer access, and event
   * details will be visible.  - "owner" - The user has ownership of the calendar. This role has all
   * of the permissions of the writer role with the additional ability to see and manipulate ACLs.
   * The value returned may be {@code null}.
   */
  public String getAccessRole() {
    return accessRole;
  }

  /**
   * The user's access role for this calendar. Read-only. Possible values are: - "none" - The user
   * has no access.  - "freeBusyReader" - The user has read access to free/busy information.  -
   * "reader" - The user has read access to the calendar. Private events will appear to users with
   * reader access, but event details will be hidden.  - "writer" - The user has read and write
   * access to the calendar. Private events will appear to users with writer access, and event
   * details will be visible.  - "owner" - The user has ownership of the calendar. This role has all
   * of the permissions of the writer role with the additional ability to see and manipulate ACLs.
   * The value set may be {@code null}.
   */
  public Events setAccessRole(String accessRole) {
    this.accessRole = accessRole;
    return this;
  }

}
